manpages = [
  { 'name': 'alpm-hooks.5' },
  { 'name': 'pacman.8' },
  { 'name': 'makepkg.8' },
  { 'name': 'makepkg-template.1' },
  { 'name': 'repo-add.8' },
  { 'name': 'vercmp.8' },
  { 'name': 'pacman-key.8' },
  { 'name': 'PKGBUILD.5', 'extra_depends' : [ 'PKGBUILD-example.txt' ] },
  { 'name': 'makepkg.conf.5' },
  { 'name': 'pacman.conf.5' },
  { 'name': 'libalpm.3' },
  { 'name': 'BUILDINFO.5' },
  { 'name': 'pacman-conf.8' },
]

sitepages = [
  { 'name': 'submitting-patches' },
  { 'name': 'translation-help' },
  { 'name': 'HACKING', 'source': '../HACKING' },
  { 'name': 'index' },
]

asciidoc_conf = join_paths(meson.current_source_dir(), 'asciidoc.conf')

asciidoc_opts = [
 '-f', asciidoc_conf,
 '-a', 'pacman_version="@0@"'.format(PACKAGE_VERSION),
 '-a', 'pacman_date=@0@'.format(run_command('date', '+%Y-%m-%d').stdout().strip()),
 '-a', 'srcext=@0@'.format(get_option('src-ext')),
 '-a', 'pkgext=@0@'.format(get_option('pkg-ext')),
 '-a', 'pkgdatadir=@0@'.format(PKGDATADIR),
 '-a', 'localstatedir=@0@'.format(LOCALSTATEDIR),
 '-a', 'sysconfdir=@0@'.format(SYSCONFDIR),
 '-a', 'datarootdir=@0@'.format(DATAROOTDIR),
 '-a', 'rootdir=@0@'.format(ROOTDIR),
]

html_targets = []
html_files = []

foreach page : manpages
  manpage = page['name']
  htmlpage = '@0@.html'.format(manpage)
  input = '@0@.asciidoc'.format(manpage)

  section = page['name'].split('.')[-1]

  mandirn = join_paths(MANDIR, 'man' + section)

  custom_target(
    manpage,
    command : [
      A2X,
      '--no-xmllint',
      '-d', 'manpage',
      '-f', 'manpage',
      '--xsltproc-opts', '-param man.endnotes.list.enabled 0 -param man.endnotes.are.numbered 0',
      '-D', '@OUTDIR@',
      '--asciidoc-opts', ' '.join(asciidoc_opts),
      '@INPUT@',
    ],
    input : input,
    output : [manpage],
    depend_files : [
      asciidoc_conf,
    ] + page.get('extra_depends', []),
    install : true,
    install_dir : mandirn,
  )
endforeach

foreach page: manpages + sitepages
  manpage = page['name']
  htmlpage = '@0@.html'.format(manpage)
  input = page.get('source', '@0@.asciidoc'.format(manpage))

  html = custom_target(
    htmlpage,
    command : [
      ASCIIDOC,
    ] + asciidoc_opts + [
      '-a', 'linkcss',
      '-a', 'toc',
      '-a', 'icons',
      '-a', 'max-width=960px',
      '-a', 'stylesheet=asciidoc-override.css',
      '-o', '@OUTPUT@',
      '@INPUT@',
    ],
    input : input,
    output : [htmlpage],
    depend_files : [
      asciidoc_conf,
      'asciidoc-override.css',
    ] + page.get('extra_depends', []),
    build_by_default : false,
    install : false,
  )
  html_targets += [html]
  html_files += [htmlpage]
endforeach

run_target('html',
           command : ['/bin/true'],
           depends : html_targets)

custom_target(
  'website.tar.gz',
  command : [
    'bsdtar', 'czf', '@OUTPUT@',
    '-C', meson.current_build_dir(),
  ] + html_files + [
    '-C', meson.current_source_dir(),
    'asciidoc-override.css',
    '-C', '/etc/asciidoc/stylesheets/',
    'asciidoc.css',
    '-C', '/etc/asciidoc/javascripts/',
    'asciidoc.js',
    '-C', '/etc/asciidoc/',
    'images',
  ],
  output : ['website.tar.gz'],
  build_by_default : false,
  depends : html_targets,
)

meson.add_install_script(MESON_MAKE_SYMLINK,
                         'repo-add.8',
                         join_paths(MANDIR, 'man8/repo-remove.8'))

meson.add_install_script(MESON_MAKE_SYMLINK,
                         'alpm-hooks.5',
                         join_paths(MANDIR, 'man5/pacman-hooks.5'))

doxygen = find_program('doxygen', required : get_option('doxygen'))
if doxygen.found() and not get_option('doxygen').disabled()
  doxyconf = configuration_data()
  doxyconf.set('OUTPUT_DIRECTORY', meson.current_build_dir())
  doxyfile = configure_file(
    input : 'Doxyfile.in',
    output : 'Doxyfile',
    configuration : doxyconf,
    install : false)

  custom_target(
    'doxygen',
    input : doxyfile,
    output : ['man3'],
    command : [doxygen, doxyfile],
    build_by_default : true,
    install : true,
    install_dir : MANDIR)
endif
